#define _SINGLE_LIST_VER2
#define NAME_LEN 12

struct s_node;
typedef struct s_node _SNode;
typedef struct s_node *_SList;

extern _SNode *create_node(void);
extern int destroy_node(_SNode *node);
extern int init_node(_SNode *node, int val);
extern _SList create_list(void);
extern void destroy_list(_SList head);
extern int insert_to_list(_SList list, _SNode *node);
extern int delete_node(_SList head, void *key);
extern int *find_node(_SList head, void *key, _SNode *node);
extern int for_each_node(_SList list, void *(* func)(void *));
extern void print_list(_SList head);
